<?php

Class Controller_Consola Extends Controller_Base {

	var $ubicacio;

	function Index(){

	}

	function Ubicacio(){
		
		$this->ubicacio=$_SESSION['ubicacio'];
		$this->omplirSelects($this->ubicacio);
		$this->loadPacients($this->ubicacio);
		$this->getPacients($this->ubicacio);

		$this->loadTemplate($this->ubicacio);
	}

	function loadPacients($ubicacio){
		$nom_ubicacio= UbicacioPeer::retrieveByPK($ubicacio)->getMne();
		if ($nom_ubicacio=='Urgencies'){

			$sql= "select  nhc001 nhc,
			neu148 num_visita, 
			cg1001 ||' '||	cg2001 Cognoms, 
			nom001 nom, 
			sex001 sexe, 
			to_char(dnx001,'YYYY-MM-DD') data_NAIXEMENT,
			trunc((sysdate-dnx001)/365) edat, 
			to_char(deu148,'YYYY-MM-DD') ||' '|| to_char(to_date(heu148,'sssss'),'HH24:MI') data_visita,
			'URG' agenda  
			from pactb001,urgtb148 
			where 
			nhc001=nhc148 and 
			dsu148 is null";

			$con=ocilogon(SIAHUser,SIAHPass,SIAHDb) or die ("error en connexio al serv aplicacions");
			

		}

		if ($nom_ubicacio=='primaria'){

		
			;
			
		}
			
			
		if ($nom_ubicacio=='Consultes'){
			$sql= "select NHC090 NHC,
			EPI090 num_visita,
			cg1001||' '||cg2001 Cognoms,
			nom001 NOM,
			to_char(dnx001,'YYYY-MM-DD') data_NAIXEMENT,
			trunc((sysdate-dnx001)/356) EDAT,
			SEX001 SEXE,
			to_char(DAS090,'YYYY-MM-DD') ||' '|| to_char(to_date(HAS090,'sssss'),'HH24:MI') data_visita,
			des091 agenda 
			from cextb090,cextb091,pactb001
			where
			das090>=trunc(sysdate) and
			das090<trunc(sysdate+1) and
			agn090=agn091 and
			ser091='RX' and
			nhc001=nhc090
			union
			select NHC500 NHC,
			NEP500 num_visita,
			cg1001||' '||cg2001 Cognoms,
			nom001 NOM,
			to_char(dnx001,'YYYY-MM-DD') data_NAIXEMENT,
			trunc((sysdate-dnx001)/356) EDAT,
			SEX001 SEXE,
			to_char(DIN500,'YYYY-MM-DD HH24:MI') data_visita,
			des091 agenda 
			from hostb500,pactb001,cextb091
			where
			tie500='C' and 
			din500>=trunc(sysdate) and
			din500<trunc(sysdate+1) and
			ser500='RX' and
			nhc500=nhc001 and
			agn500=agn091
			order by data_visita";
			
			$con=ocilogon(SIAHUser,SIAHPass,SIAHDb) or die ("error en connexio al serv aplicacions");
			
		}
			
			
			
		if(!empty($sql)){
			$stmt = ociparse($con,$sql) or ("Error al parse");
			ociexecute($stmt) or  die ('Error al seleccionar la llista:'.$sql);
			
			//si són d'urgencies els marquem tots com ha N al camp actualitzat
				
				if ($nom_ubicacio=='Urgencies'){
					$con = Propel::getConnection();
					//select
					$c1 = new Criteria();
					$c1->add(PacientsPeer::ID_UBICACIO,$ubicacio);
					// update set
					$c2 = new Criteria();
					$c2->add(PacientsPeer::ACTUALITZAT, 'N');
					BasePeer::doUpdate($c1, $c2, $con);
				}
			
			while(OCIFetchInto($stmt,$row,OCI_ASSOC)){
				
				


				
				//mirem  si exiteix el pàcient
				$c = new Criteria();
				$c->add(PacientsPeer::NHC,$row['NHC']);
				$c->add(PacientsPeer::NUM_VISITA ,$row['NUM_VISITA']);
				$pacient = PacientsPeer::doSelectOne($c);
				
				//Si no existeix el borrem
				if (empty($pacient)){
					$pacient = new Pacients();
					$pacient->setAssignat('N');
					$pacient->setCognoms($row['COGNOMS']);
					$pacient->setDataVisita($row['DATA_VISITA']);
					$pacient->setDataNaixement($row['DATA_NAIXEMENT']);
					$pacient->setEdat($row['EDAT']);
					$pacient->setNom($row['NOM']);
					$pacient->setNumVisita($row['NUM_VISITA']);
					$pacient->setSexe($row['SEXE']);
					$pacient->setNhc($row['NHC']);
					$pacient->setAgenda($row['AGENDA']);
					$pacient->setIdUbicacio($ubicacio);
					$pacient->setIdTecnic(9999);
					$pacient->setIdProva(9999);
					$pacient->setIdMaquina(9999);
					$pacient->setActualitzat('S');
					$pacient->save();
				} //si existeix el marquem com actualitzat
				else {
					$pacient->setActualitzat('S');
					$pacient->save();
				}

			}
			
			//tots els que no estan marcat com actualitzat a S vol dir que ja no estan a urgencies i els eliminem
				if ($nom_ubicacio=='Urgencies'){
					
					$pacients=new PacientsPeer();
					$c= new Criteria();
					$c->add(PacientsPeer::ACTUALITZAT,'N');
					$pacients->doDelete($c);
				}
			


		}


			
			
			
	}

	function getPacientsAjax(){
		
		$c = new Criteria();
		$c->add(PacientsPeer::ID_UBICACIO,$this->ubicacio);
		$c->add(PacientsPeer::ASSIGNAT,'N');
		$pacients = PacientsPeer::doSelect($c);
		$table='<table class="table1">
		  <tbody>
		    <tr>
		      <th>Nhc</th>
		      <th>EPI/NDA</th>
		      <th>Data Visita</th>
		      <th>Cognoms</th>
		      <th>Nom</th>
		      <th>Sexe</th>
		      <th>Edat</th>
		      <th>Selecci&oacute;</th>
		    </tr>';
		foreach ($pacients as $pacient) {
			$table.='	<tr>
		      <th class="sub" >'. $pacient->getNhc() .'</th>
		      <td>'.$pacient->getNumVisita() .'</td>
		      <td>'. $pacient->getDataVisita() .'</td>
		      <td>'. $pacient->getCognoms() .'</td>
		      <td>'. $pacient->getNom() .'</td>
		      <td>'. $pacient->getSexe() .'</td>
		      <td>'. $pacient->getEdat() .'</td>
		    <td><input name="<?= $pacient->getId(); ?>" type="checkbox" /></td>
    		</tr>';
		}

		$table.=' </tbody></table>';

		echo $table;

	}

	function getPacients($ubicacio){
		$c = new Criteria();
		$c->add(PacientsPeer::ID_UBICACIO,$ubicacio);
		$c->add(PacientsPeer::ASSIGNAT,'N');
		$nom_ubicacio= UbicacioPeer::retrieveByPK($ubicacio)->getMne();
		if ($nom_ubicacio!='Urgencies'){
			$c->add(PacientsPeer::DATA_VISITA,date('Y-m-d').' 00:00:00',Criteria::GREATER_EQUAL);
			//$c->add(PacientsPeer::DATA_VISITA,date('Y-m-d').' 23:59:59',Criteria::LESS_EQUAL);			
		}
		
		$c->addAscendingOrderByColumn(PacientsPeer::DATA_VISITA);

		$pacients = PacientsPeer::doSelect($c);
		$this->template->set('pacients', $pacients);
	}

	function loadTemplate($ubicacio){
		try {
			$u= UbicacioPeer::retrieveByPK($this->ubicacio);
			$breadcum=array($u->getUbicacio());
			$this->template->set('ubicacio', $this->ubicacio);
			$this->template->set('breadcum', $breadcum);
			$this->template->show ('consola');
				
				
		}catch (TemplateException $e){
			$this->template->remove('error_code');
			$this->template->set('error_code', $e->getMessage());
			$this->template->show('error');
		}
	}
	
	function updatePacients($tecnic,$prova,$maquina,$id){
		try {
			$pacient = new Pacients();
			$c=new Criteria();
			$c->Add(PacientsPeer::ID,$id);
			$pacient= PacientsPeer::doSelectOne($c);
			if($pacient->getAssignat()=='N'){
				$pacient->setAssignat('S');
				$pacient->setIdTecnic($tecnic);
				//$pacient->setIdProva($prova);  Tret per sol·licitud del propi servei 20-05-2008
				$pacient->setIdMaquina($maquina);
				$pacient->setDataAssignacio(date('Y-m-d'));
				$pacient->save();
				//escriu el xml
				try {
				$wl = new WorkList();
				$wl->escriuMissatgeProgramacio($pacient);
				}
				catch (Exception $i){

					//reactivem el passient
					$pacient->setAssignat('N');
					$pacient->save();
					
					$this->template->remove('error_code');
					$this->template->set('error_code', $i->getMessage());
					$this->template->show('error');
					exit();
				}
			}		
		}catch (TemplateException $e){
			$this->template->remove('error_code');
			$this->template->set('error_code', $e->getMessage());
			$this->template->show('error');
			exit();
		}
	}
	
	function seleccioPacients(){
		session_start();
		
		try {
			$tecnic=$_POST['tecnic'];
			$prova=$_POST['prova'];
			$maquina=$_POST['maquina'];		
			
			foreach($_POST as $p => $v ){
				if (substr($p,0,3)=='id_'){
					$id = substr($p,3);
					if ($v=='on'){
						$r=$this->updatePacients($tecnic,$prova,$maquina,$id);	
					}
				}
			}
			$this->Ubicacio();
		}catch (TemplateException $e){
			$this->template->remove('error_code');
			$this->template->set('error_code', $e->getMessage());
			$this->template->show('error');
		}		
	}

	function omplirSelects($ubicacio){
		//creacio dels selects

		$tecnics=new TecnicPeer();
		$c= new Criteria();
		$c->add(TecnicPeer::UBICACIO,$ubicacio);
		$c->add(TecnicPeer::VISIBLE,'S');
		$resTec=$tecnics->doSelect($c);
			

		$proves=new ProvaPeer();
		$c= new Criteria();
		$c->add(ProvaPeer::VISIBLE,'S');
		$resPro=$proves->doSelect($c);
			
			
		$maquina=new MaquinaPeer();
		$c= new Criteria();
		$c->add(MaquinaPeer::VISIBLE,'S');
		$c->add(MaquinaPeer ::UBICACIO,$ubicacio);
		$resMac=$maquina->doSelect($c);

		$this->template->set('tecnic', $resTec);
		$this->template->set('prova', $resPro);
		$this->template->set('maquina', $resMac);
	}


}


?>